/*
 * TDS PEC 4
 * Grupo 3H2M

 * Luis Rodríguez-Manzaneque Sánchez
 *
 * El paquete <code>edu.uoc.tds.pec4.aulas</code> contiene todos los módulos 
 * relativos al subsistema Aulas, tanto la parte de la interfaz gráfica de la 
 * aplicación cliente, como el interfaz e implementación del objeto remoto que
 * provee de servicios a la GUI.
 */
package edu.uoc.tds.pec4.aulas;

import edu.uoc.tds.pec4.rmi.GestorAulasInterface;
import edu.uoc.tds.pec4.beans.AulaDTO;
import edu.uoc.tds.pec4.beans.EquipamientoSolicitudDTO;
import edu.uoc.tds.pec4.beans.ReservaDTO;
import edu.uoc.tds.pec4.beans.SolicitudDTO;
import edu.uoc.tds.pec4.beans.UsuarioDTO;
import edu.uoc.tds.pec4.rmi.GestorDiccionarioInterface;
import edu.uoc.tds.pec4.common.filters.FiltroFechasHoras;
import edu.uoc.tds.pec4.common.util.Constantes;
import edu.uoc.tds.pec4.common.util.TDSLanguageUtils;
import edu.uoc.tds.pec4.common.util.UtilidadesGUI;
import edu.uoc.tds.pec4.server.bbdd.exceptions.GestorAulasException;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;
import java.util.Calendar;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JOptionPane;

/**
 * La clase <code>DialogDetalleSolicitud</code> representa la interfaz de usuario 
 * para la consulta de una solicitud.<br />
 *
 * Interficie de usuario para la consulta de una solicitud.
 *
 * @author	Luis Rodríguez-Manzaneque Sánchez
 * @version	08/12/2011
 * @see		edu.uoc.tds.pec4.common.GestorAulasInterface
 */
public class DialogDetalleSolicitud extends javax.swing.JDialog {

    /** idSolicitud es el identificador de la solicitud en pantalla */
    private int idSolicitud;
    /** sol es el objeto DTO de la solicitud */
    private SolicitudDTO sol;
    /** objRemoto Es el objeto empleado como interfaz en la comunicación RMI */
    private GestorDiccionarioInterface objRemotoDic = null;
    private GestorAulasInterface objRemotoAula = null;
    /** usLogeado representa al usuario que está autentificado */
    private UsuarioDTO usLogeado;

    /** Creates new form DialogDetalleSolicitud */
    public DialogDetalleSolicitud(java.awt.Frame parent, boolean modal,
            GestorDiccionarioInterface objRemotoDic, GestorAulasInterface objRemotoAula,
            int idSolicitud, UsuarioDTO usLogeado) {
        super(parent, TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.titulo"), modal);

        this.idSolicitud = idSolicitud;
        this.objRemotoDic = objRemotoDic;
        this.objRemotoAula = objRemotoAula;
        this.usLogeado = usLogeado;

        initComponents();

        setLabels();

        mostrarDatos();

        //Centramos la ventana en la pantalla
        UtilidadesGUI.centrarVentana(this, JOptionPane.getFrameForComponent(this));
    }

    private void setLabels() {
        jLabelIdSolicitud.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datossolicitud.idsolicitud"));
        jLabelIdSolicitud1.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datossolicitud.tiposolicitud"));
        jLabelEstado.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datossolicitud.estado"));
        jLabelFechaSolicitud.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datossolicitud.fechasolicitud"));
        jLabelFechaSolicitud1.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datossolicitud.horasolicitud"));
        labelCliente.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datossolicitud.cliente"));

        DatosGenerales.setBorder(javax.swing.BorderFactory.createTitledBorder(null, TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
        jLabelSuperficie.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales.superficie"));
        jLabelAforo.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales.asistentes"));
        jLabelTipoEncuentro.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales.tipoencuentro"));
        jPanelFechaHoraEncuentro.setBorder(javax.swing.BorderFactory.createTitledBorder(null, TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales.fecha"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
        jLabelDesdeFecha.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales.fecha.desde"));
        jLabelHastaFecha.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales.fecha.hasta"));

        jPanelDuracion.setBorder(javax.swing.BorderFactory.createTitledBorder(null, TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales.duracion"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
        jLabelDesdeFecha1.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales.duracion.de"));
        jLabelHastaFecha1.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales.duracion.a"));
        chkDiaCompleto.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales.duracion.diacompleto"));

        jPanelLocalizacion.setBorder(javax.swing.BorderFactory.createTitledBorder(null, TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.localizacion"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
        jLabelLocalidad.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales.localizacion.ciudad"));
        jLabelProvincia.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales.localizacion.provincia"));
        jLabelPais.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datosgenerales.localizacion.pais"));
        jPanelCaracyEquipa.setBorder(javax.swing.BorderFactory.createTitledBorder(null, TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.cfisicasequip"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N

        jPanelCaracyEquipa1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.cfisicasequip.cfisicas"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N

        jPanelEquipamientoSeleccionado.setBorder(javax.swing.BorderFactory.createTitledBorder(null, TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.cfisicasequip.equipamiento"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N

        jTableEquipamiento.setModel(new javax.swing.table.DefaultTableModel(
                new Object[][]{
                    {null, null},
                    {null, null},
                    {null, null},
                    {null, null},
                    {null, null},
                    {null, null}
                },
                new String[]{
                    TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.cfisicasequip.equipamiento"), TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.cfisicasequip.cantidad")
                }) {

            Class[] types = new Class[]{
                java.lang.String.class, java.lang.Integer.class
            };
            boolean[] canEdit = new boolean[]{
                false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types[columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit[columnIndex];
            }
        });
        jScrollPane2.setViewportView(jTableEquipamiento);
        jPanelDatosInteres.setBorder(javax.swing.BorderFactory.createTitledBorder(null, TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.observaciones"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N

        cmdAsignarAula.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.asignar"));
        cmdTramitar.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.cancelarsol"));
        cmdConsultarReserva.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.verreserva"));
        cmdCerrar.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.salir"));
    }

    /**
     * Muestra los datos de la solicitud en pantalla
     */
    private void mostrarDatos() {
        try {

            // Deshabilitamos la edición de las cajas de texto
            jTextAreaObservaciones.setEditable(false);
            txtAsistentes.setEditable(false);
            txtCiudad.setEditable(false);
            txtCliente.setEditable(false);
            txtEstado.setEditable(false);
            txtFechaFin.setEditable(false);
            txtFechaIni.setEditable(false);
            txtFechaSolicitud.setEditable(false);
            txtHoraFin.setEditable(false);
            txtHoraIni.setEditable(false);
            txtHoraSolicitud.setEditable(false);
            txtIdSolicitud.setEditable(false);
            txtPais.setEditable(false);
            txtProvincia.setEditable(false);
            txtSuperficie.setEditable(false);
            txtTipoEncuentro.setEditable(false);
            txtTipoSolicitud.setEditable(false);
            chkDiaCompleto.setEnabled(false);

            // Llamamos al objeto remoto
            sol = objRemotoAula.getSolicitud(idSolicitud);

            // Cargamos los controles
            txtIdSolicitud.setText(sol.getIdSolicitud().toString());
            txtCliente.setText(sol.getNomCliente());
            txtTipoSolicitud.setText(TDSLanguageUtils.getMessage("aulas.consulta.solicitudes.tipo." + sol.getTipo()));
            txtFechaSolicitud.setText(UtilidadesGUI.obtenerFecha(sol.getFechaSol()));
            txtHoraSolicitud.setText(UtilidadesGUI.obtenerHora(sol.getHoraSol()));
            txtEstado.setText(TDSLanguageUtils.getMessage("aulas.consulta.solicitudes.estado." + sol.getEstado()));
            txtTipoEncuentro.setText(sol.getNomTEncuentro());
            txtSuperficie.setText(sol.getSuperficie().toString());
            txtAsistentes.setText(sol.getAsistentes().toString());

            txtFechaIni.setText(UtilidadesGUI.obtenerFecha(sol.getFechaIni()));
            txtFechaFin.setText(UtilidadesGUI.obtenerFecha(sol.getFechaFin()));

            if (!sol.isDiaCompleto()) {
                txtHoraIni.setText(UtilidadesGUI.obtenerHora(sol.getHoraIni()));
                txtHoraFin.setText(UtilidadesGUI.obtenerHora(sol.getHoraFin()));
            }
            chkDiaCompleto.setSelected(sol.isDiaCompleto());

            txtCiudad.setText(sol.getNomCiudad());
            txtProvincia.setText(sol.getNomProvincia());
            txtPais.setText(sol.getNomPais());

            jListCFisicas.setListData(sol.getListCFisicas().toArray());

            for (int i = 0; i < sol.getListEquipamiento().size(); i++) {
                jTableEquipamiento.setValueAt(sol.getListEquipamiento().get(i).getNomEquipamiento(), i, 0);
                jTableEquipamiento.setValueAt(sol.getListEquipamiento().get(i).getCantidad(), i, 1);
            }

            jTextAreaObservaciones.setText(sol.getObservaciones());

            habilitarBotones();

        } catch (GestorAulasException giE) {
            JOptionPane.showMessageDialog(null,
                    TDSLanguageUtils.getMessage("aulas.consulta.solicitudes.err.gestor.desc") + Constantes.SL
                    + giE.getMessage(), TDSLanguageUtils.getMessage("aulas.consulta.solicitudes.err.gestor"),
                    JOptionPane.ERROR_MESSAGE);
        } catch (RemoteException eRe) {
            JOptionPane.showMessageDialog(null,
                    TDSLanguageUtils.getMessage("aulas.consulta.solicitudes.err.gestor.desc") + Constantes.SL
                    + eRe.getMessage(), TDSLanguageUtils.getMessage("aulas.consulta.solicitudes.err.remoto.desc"),
                    JOptionPane.ERROR_MESSAGE);
        }
    }

    private void habilitarBotones() {
        // Por defecto, deshabilitamos todos
        cmdAsignarAula.setEnabled(false);
        cmdTramitar.setEnabled(false);
        cmdConsultarReserva.setEnabled(false);

        if (sol.getTipo() == Constantes.TIPO_SOLICITUD) {
            switch (sol.getEstado()) {
                case Constantes.SOLICITUD_PENDIENTE: // GestorAulasInterface.ESTADO_SOL_ENVIADA:
                    cmdAsignarAula.setEnabled(true);
                    break;
                case Constantes.SOLICITUD_ATENDIDA: //GestorAulasInterface.ESTADO_SOL_ATENDIDA:
                    cmdConsultarReserva.setEnabled(true);
                    break;
            }
        } else if (sol.getTipo() == Constantes.TIPO_CANCEL_SOLICITUD) {
            switch (sol.getEstado()) {
                case Constantes.SOLICITUD_PENDIENTE:
                    cmdTramitar.setEnabled(true);
                    break;
            }
        } else if (sol.getTipo() == Constantes.TIPO_CANCEL_RESERVA) {
            switch (sol.getEstado()) {
                case Constantes.SOLICITUD_PENDIENTE:
                    cmdTramitar.setEnabled(true);
                    break;
                case Constantes.SOLICITUD_ATENDIDA:
                    cmdConsultarReserva.setEnabled(true);
                    break;
            }
        }
    }

    /**
     * Este método inicializa el botón Asignar aula
     *
     * @return javax.swing.JButton
     */
    private JButton getCmdAsignarAula() {
        if (cmdAsignarAula == null) {
            cmdAsignarAula = new JButton();
            cmdAsignarAula.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.asignar"));
            cmdAsignarAula.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {
                    cmdAsignarAulaActionPerformed(e);
                }
            });
        }
        return cmdAsignarAula;
    }

    /**
     * Método que maneja el evento sobre el botón de asignar aula.<br />
     * Realiza la operación de mostrar el diálogo de asignación de aula
     */
    private void cmdAsignarAulaActionPerformed(ActionEvent e) {

        try {
            // Creamos el filtro de fechas y horas
            FiltroFechasHoras ffh = new FiltroFechasHoras();
            ffh.setFechaInicio(sol.getFechaIni());
            ffh.setFechaFin(sol.getFechaFin());
            ffh.setHoraInicio(sol.getHoraIni());
            ffh.setHoraFin(sol.getHoraFin());

            // Llamamos al objeto remoto
            List<AulaDTO> aulas = objRemotoAula.listaAulasLibres(sol.getIdCiudad(), ffh);

            // Mostramos el dialogo
            DialogAsignacionAula dl = new DialogAsignacionAula(JOptionPane.getFrameForComponent(this),
                    true, sol, aulas);
            dl.setVisible(true);

            // Comprobamos si se ha elegido un aula
            if (dl.getAulaSelec() != null) {
                ReservaDTO r = new ReservaDTO();
                r.setIdReserva(sol.getIdSolicitud());
                r.setIdAula(dl.getAulaSelec().getIdAula());
                r.setAula(dl.getAulaSelec());
                r.setIdEmpleado(usLogeado.getIdUsuario());
                
                //Calculamos el importe de la reserva
                r.setImporte(calcularImporte(r));

                //Insertamos la reserva y actualizamos su estado en la bbdd
                objRemotoAula.insertarReserva(r);
                sol.setEstado(Constantes.SOLICITUD_ATENDIDA);

                habilitarBotones();

                JOptionPane.showMessageDialog(null,
                        TDSLanguageUtils.getMessage("aulas.consulta.aulas.asignar.info"),
                        TDSLanguageUtils.getMessage("aulas.aviso"),
                        JOptionPane.INFORMATION_MESSAGE);

            }
        } catch (GestorAulasException giE) {
            JOptionPane.showMessageDialog(null,
                    TDSLanguageUtils.getMessage("aulas.consulta.aulaslibres.err.gestor.desc") + Constantes.SL
                    + giE.getMessage(), TDSLanguageUtils.getMessage("aulas.consulta.solicitudes.err.gestor"),
                    JOptionPane.ERROR_MESSAGE);
        } catch (RemoteException eRe) {
            JOptionPane.showMessageDialog(null,
                    TDSLanguageUtils.getMessage("aulas.consulta.aulaslibres.err.gestor.desc") + Constantes.SL
                    + eRe.getMessage(), TDSLanguageUtils.getMessage("aulas.consulta.solicitudes.err.remoto.desc"),
                    JOptionPane.ERROR_MESSAGE);
        }


    }

    /**
     * Este método inicializa el botón de tramitar cancelacion
     *
     * @return javax.swing.JButton
     */
    private JButton getCmdTramitar() {
        if (cmdTramitar == null) {
            cmdTramitar = new JButton();
            cmdTramitar.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.cancelarsol"));
            cmdTramitar.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {
                    cmdTramitarActionPerformed(e);
                }
            });
        }
        return cmdTramitar;
    }

    /**
     * Método que maneja el evento sobre el botón de cancelar solicitud.<br />
     * Realiza la operación de mostrar el diálogo de cancelar solicitud
     */
    /*private void cmdTramitarActionPerformed(ActionEvent e) {
    // FALTA
    String hola="";
    }*/
    /**
     * Este método inicializa el botón consultar reservas
     *
     * @return javax.swing.JButton
     */
    private JButton getCmdConsultarReserva() {
        if (cmdConsultarReserva == null) {
            cmdConsultarReserva = new JButton();
            cmdConsultarReserva.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.verreserva"));
            cmdConsultarReserva.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {
                    cmdConsultarReservaActionPerformed(e);
                }
            });
        }
        return cmdConsultarReserva;
    }

    /**
     * Método que maneja el evento sobre el botón de consultar reserva.<br />
     * Realiza la operación de mostrar el diálogo de consultar reserva
     */
    /**
     * Este método inicializa el botón Cerrar
     *
     * @return javax.swing.JButton
     */
    private JButton getCmdCerrar() {
        if (cmdCerrar == null) {
            cmdCerrar = new JButton();
            cmdCerrar.setText(TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.salir"));
            cmdCerrar.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {
                    cmdCerrarActionPerformed(e);
                }
            });
        }
        return cmdCerrar;
    }

    /**
     * Método que maneja el evento sobre el botón de Cerrar.<br />
     * Realiza la operación de cierre del dialogo
     */
    private void cmdCerrarActionPerformed(ActionEvent e) {
        dispose();
    }

    /**
     * Método que maneja el evento sobre el botón de Cerrar.<br />
     * Realiza la operación de cierre del dialogo
     */
    private double calcularImporte(ReservaDTO r) {
        final long MILLSECS_PER_DAY = 24 * 60 * 60 * 1000; //Milisegundos al día 
        double importe = 0;
        long difDias = 0;
        
        // Calculamos si hay días completos
        difDias = (sol.getFechaFin().getTime() - sol.getFechaIni().getTime() )/ MILLSECS_PER_DAY;
        
        if (sol.getDiaCompleto()) {
            // Al considerarse todos los días completos, sumamos un día
            difDias++;
            
            // Calculamos el importe de los días de uso del aula
            importe += difDias * r.getAula().getPrecioDia();
            
            // Calculamos el importe del uso de los equipamientos
            for (EquipamientoSolicitudDTO e: sol.getListEquipamiento()) {
                if (e.getTipoPrecio()==Constantes.PRECIO_POR_ASISTENTE) {
                    // Precio por persona
                    importe += e.getCantidad() * e.getPrecioDia() * sol.getAsistentes();
                } else {
                    //Constantes.PRECIO_POR_ESPACIO
                    importe += e.getCantidad() * e.getPrecioDia();
                    
                }
            }
        
        
        } else {
            // No son dias completos. Entonces son completos todos aquellos dias
            // de la solicitud excepto el del principio y el del final que se 
            // calculan por horas
            difDias++;
            
            if (difDias>2) {
                // Si la diferencia en dias > 2 entonces hay dias completos centrales
                // Calculamos el importe de los días de uso del aula
                importe += (difDias-2) * r.getAula().getPrecioDia();
            }
            
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(sol.getHoraIni());            
            // Ahora calculamos las horas del dia de inicio
            int horas1erDia = 24 - calendar.get(Calendar.HOUR_OF_DAY); //hora en formato 24hs
            importe += horas1erDia * r.getAula().getPrecioHora();

            // Ahora calculamos las horas del dia del dia de fin
            calendar.setTime(sol.getHoraFin());            
            int horasUltDia = 24 - calendar.get(Calendar.HOUR_OF_DAY); //hora en formato 24hs
            importe += horasUltDia * r.getAula().getPrecioHora();
            
            //Ahora el precio de los equipamientos
            for (EquipamientoSolicitudDTO e: sol.getListEquipamiento()) {
                importe += e.getCantidad() * (difDias-2) * e.getPrecioDia();

                // Precio por persona, por las horas del dia de inicio y de fin
                importe += e.getCantidad() * horas1erDia * e.getPrecioHora();
                importe += e.getCantidad() * horasUltDia * e.getPrecioHora();
            }
            
        }
        
        return importe;
    }
    
    
    

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        DatosSolicitud = new javax.swing.JPanel();
        jLabelIdSolicitud = new javax.swing.JLabel();
        txtIdSolicitud = new javax.swing.JTextField();
        jLabelIdSolicitud1 = new javax.swing.JLabel();
        txtTipoSolicitud = new javax.swing.JTextField();
        jLabelEstado = new javax.swing.JLabel();
        txtEstado = new javax.swing.JTextField();
        txtHoraSolicitud = new javax.swing.JTextField();
        jLabelFechaSolicitud = new javax.swing.JLabel();
        jLabelFechaSolicitud1 = new javax.swing.JLabel();
        txtFechaSolicitud = new javax.swing.JTextField();
        txtCliente = new javax.swing.JTextField();
        labelCliente = new javax.swing.JLabel();
        DatosGenerales = new javax.swing.JPanel();
        jLabelSuperficie = new javax.swing.JLabel();
        txtSuperficie = new javax.swing.JTextField();
        jLabelAforo = new javax.swing.JLabel();
        txtAsistentes = new javax.swing.JTextField();
        jLabelTipoEncuentro = new javax.swing.JLabel();
        txtTipoEncuentro = new javax.swing.JTextField();
        jPanelFechaHoraEncuentro = new javax.swing.JPanel();
        jLabelDesdeFecha = new javax.swing.JLabel();
        txtFechaIni = new javax.swing.JTextField();
        txtFechaFin = new javax.swing.JTextField();
        jLabelHastaFecha = new javax.swing.JLabel();
        jPanelDuracion = new javax.swing.JPanel();
        jLabelDesdeFecha1 = new javax.swing.JLabel();
        txtHoraIni = new javax.swing.JTextField();
        txtHoraFin = new javax.swing.JTextField();
        jLabelHastaFecha1 = new javax.swing.JLabel();
        chkDiaCompleto = new javax.swing.JCheckBox();
        jPanelLocalizacion = new javax.swing.JPanel();
        jLabelLocalidad = new javax.swing.JLabel();
        jLabelProvincia = new javax.swing.JLabel();
        jLabelPais = new javax.swing.JLabel();
        txtProvincia = new javax.swing.JTextField();
        txtCiudad = new javax.swing.JTextField();
        txtPais = new javax.swing.JTextField();
        jPanelCaracyEquipa = new javax.swing.JPanel();
        jPanelCaracyEquipa1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jListCFisicas = new javax.swing.JList();
        jPanelEquipamientoSeleccionado = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTableEquipamiento = new javax.swing.JTable();
        jPanelDatosInteres = new javax.swing.JPanel();
        jScrollPane3 = new javax.swing.JScrollPane();
        jTextAreaObservaciones = new javax.swing.JTextArea();
        cmdTramitar = getCmdTramitar();
        cmdCerrar = getCmdCerrar();
        cmdAsignarAula = getCmdAsignarAula();
        cmdConsultarReserva = getCmdConsultarReserva();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        DatosSolicitud.setBorder(javax.swing.BorderFactory.createTitledBorder(null, TDSLanguageUtils.getMessage("aulas.detalle.solicitudes.datossolicitud"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
        DatosSolicitud.setName(""); // NOI18N

        jLabelIdSolicitud.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelIdSolicitud.setText("ID Solicitud:");

        jLabelIdSolicitud1.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelIdSolicitud1.setText("Tipo de Solicitud:");

        jLabelEstado.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelEstado.setText("Estado:");

        jLabelFechaSolicitud.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelFechaSolicitud.setText("Fecha de solicitud:");

        jLabelFechaSolicitud1.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelFechaSolicitud1.setText("Hora de solicitud:");

        labelCliente.setFont(new java.awt.Font("Tahoma", 1, 11));
        labelCliente.setText("Cliente:");

        javax.swing.GroupLayout DatosSolicitudLayout = new javax.swing.GroupLayout(DatosSolicitud);
        DatosSolicitud.setLayout(DatosSolicitudLayout);
        DatosSolicitudLayout.setHorizontalGroup(
            DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(DatosSolicitudLayout.createSequentialGroup()
                .addGap(10, 10, 10)
                .addGroup(DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabelIdSolicitud1)
                    .addComponent(jLabelIdSolicitud)
                    .addComponent(labelCliente))
                .addGap(4, 4, 4)
                .addGroup(DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(txtTipoSolicitud, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(txtIdSolicitud, javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(txtCliente, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 125, Short.MAX_VALUE)))
                .addGap(90, 90, 90)
                .addGroup(DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabelEstado)
                    .addComponent(jLabelFechaSolicitud1)
                    .addComponent(jLabelFechaSolicitud))
                .addGap(18, 18, 18)
                .addGroup(DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(txtEstado)
                    .addComponent(txtHoraSolicitud)
                    .addComponent(txtFechaSolicitud, javax.swing.GroupLayout.DEFAULT_SIZE, 108, Short.MAX_VALUE))
                .addContainerGap(21, Short.MAX_VALUE))
        );
        DatosSolicitudLayout.setVerticalGroup(
            DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(DatosSolicitudLayout.createSequentialGroup()
                .addGap(2, 2, 2)
                .addGroup(DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabelIdSolicitud)
                        .addComponent(txtIdSolicitud, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabelFechaSolicitud)
                        .addComponent(txtFechaSolicitud, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(txtCliente, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(labelCliente))
                    .addGroup(DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabelFechaSolicitud1)
                        .addComponent(txtHoraSolicitud, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(DatosSolicitudLayout.createSequentialGroup()
                        .addGap(3, 3, 3)
                        .addComponent(jLabelIdSolicitud1))
                    .addComponent(txtTipoSolicitud, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(DatosSolicitudLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addComponent(txtEstado, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabelEstado))))
        );

        DatosGenerales.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Datos Generales", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
        DatosGenerales.setName(""); // NOI18N

        jLabelSuperficie.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelSuperficie.setText("Superficie:");

        jLabelAforo.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelAforo.setText("Aforo:");
        jLabelAforo.setToolTipText("");

        jLabelTipoEncuentro.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelTipoEncuentro.setText("Tipo de Encuentro:");

        jPanelFechaHoraEncuentro.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Fecha", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
        jPanelFechaHoraEncuentro.setName(""); // NOI18N

        jLabelDesdeFecha.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelDesdeFecha.setText("Desde:");

        txtFechaIni.setEditable(true);
        txtFechaIni.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtFechaIniActionPerformed(evt);
            }
        });

        jLabelHastaFecha.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelHastaFecha.setText("Hasta:");

        javax.swing.GroupLayout jPanelFechaHoraEncuentroLayout = new javax.swing.GroupLayout(jPanelFechaHoraEncuentro);
        jPanelFechaHoraEncuentro.setLayout(jPanelFechaHoraEncuentroLayout);
        jPanelFechaHoraEncuentroLayout.setHorizontalGroup(
            jPanelFechaHoraEncuentroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelFechaHoraEncuentroLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanelFechaHoraEncuentroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabelHastaFecha)
                    .addComponent(jLabelDesdeFecha))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanelFechaHoraEncuentroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(txtFechaFin)
                    .addComponent(txtFechaIni, javax.swing.GroupLayout.DEFAULT_SIZE, 83, Short.MAX_VALUE))
                .addContainerGap())
        );
        jPanelFechaHoraEncuentroLayout.setVerticalGroup(
            jPanelFechaHoraEncuentroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelFechaHoraEncuentroLayout.createSequentialGroup()
                .addGroup(jPanelFechaHoraEncuentroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelDesdeFecha)
                    .addComponent(txtFechaIni, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanelFechaHoraEncuentroLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelHastaFecha)
                    .addComponent(txtFechaFin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(28, Short.MAX_VALUE))
        );

        jPanelDuracion.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Duración", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
        jPanelDuracion.setName(""); // NOI18N

        jLabelDesdeFecha1.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelDesdeFecha1.setText("De:");

        txtHoraIni.setEditable(true);
        txtHoraIni.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txtHoraIniActionPerformed(evt);
            }
        });

        jLabelHastaFecha1.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelHastaFecha1.setText("A:");

        chkDiaCompleto.setFont(new java.awt.Font("Tahoma", 1, 11));
        chkDiaCompleto.setText("Día completo");
        chkDiaCompleto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                chkDiaCompletoActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanelDuracionLayout = new javax.swing.GroupLayout(jPanelDuracion);
        jPanelDuracion.setLayout(jPanelDuracionLayout);
        jPanelDuracionLayout.setHorizontalGroup(
            jPanelDuracionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelDuracionLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanelDuracionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanelDuracionLayout.createSequentialGroup()
                        .addGroup(jPanelDuracionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabelHastaFecha1)
                            .addComponent(jLabelDesdeFecha1))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanelDuracionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(txtHoraFin)
                            .addComponent(txtHoraIni, javax.swing.GroupLayout.DEFAULT_SIZE, 54, Short.MAX_VALUE)))
                    .addComponent(chkDiaCompleto))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        jPanelDuracionLayout.setVerticalGroup(
            jPanelDuracionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelDuracionLayout.createSequentialGroup()
                .addGroup(jPanelDuracionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelDesdeFecha1)
                    .addComponent(txtHoraIni, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanelDuracionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabelHastaFecha1)
                    .addComponent(txtHoraFin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(chkDiaCompleto)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout DatosGeneralesLayout = new javax.swing.GroupLayout(DatosGenerales);
        DatosGenerales.setLayout(DatosGeneralesLayout);
        DatosGeneralesLayout.setHorizontalGroup(
            DatosGeneralesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(DatosGeneralesLayout.createSequentialGroup()
                .addGroup(DatosGeneralesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabelTipoEncuentro)
                    .addComponent(jLabelSuperficie)
                    .addComponent(jLabelAforo))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(DatosGeneralesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(txtTipoEncuentro, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txtSuperficie, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txtAsistentes, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addComponent(jPanelFechaHoraEncuentro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPanelDuracion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(15, Short.MAX_VALUE))
        );
        DatosGeneralesLayout.setVerticalGroup(
            DatosGeneralesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(DatosGeneralesLayout.createSequentialGroup()
                .addGroup(DatosGeneralesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(DatosGeneralesLayout.createSequentialGroup()
                        .addGap(14, 14, 14)
                        .addGroup(DatosGeneralesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabelTipoEncuentro)
                            .addComponent(txtTipoEncuentro, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(DatosGeneralesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabelSuperficie)
                            .addComponent(txtSuperficie, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(DatosGeneralesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabelAforo)
                            .addComponent(txtAsistentes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addComponent(jPanelFechaHoraEncuentro, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanelDuracion, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        jPanelLocalizacion.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Localización", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
        jPanelLocalizacion.setName(""); // NOI18N

        jLabelLocalidad.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelLocalidad.setText("Ciudad:");

        jLabelProvincia.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelProvincia.setText("Provincia:");

        jLabelPais.setFont(new java.awt.Font("Tahoma", 1, 11));
        jLabelPais.setText("Pais:");

        javax.swing.GroupLayout jPanelLocalizacionLayout = new javax.swing.GroupLayout(jPanelLocalizacion);
        jPanelLocalizacion.setLayout(jPanelLocalizacionLayout);
        jPanelLocalizacionLayout.setHorizontalGroup(
            jPanelLocalizacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelLocalizacionLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabelLocalidad)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(txtCiudad, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jLabelProvincia)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtProvincia, javax.swing.GroupLayout.PREFERRED_SIZE, 134, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jLabelPais, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(txtPais, javax.swing.GroupLayout.PREFERRED_SIZE, 123, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(26, Short.MAX_VALUE))
        );
        jPanelLocalizacionLayout.setVerticalGroup(
            jPanelLocalizacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelLocalizacionLayout.createSequentialGroup()
                .addGroup(jPanelLocalizacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanelLocalizacionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jLabelLocalidad)
                        .addComponent(txtCiudad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabelProvincia)
                        .addComponent(txtProvincia, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jLabelPais)
                    .addComponent(txtPais, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanelCaracyEquipa.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Características Físicas y Equipamiento", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N

        jPanelCaracyEquipa1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Características Físicas y Equipamiento", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N

        jListCFisicas.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jScrollPane1.setViewportView(jListCFisicas);

        javax.swing.GroupLayout jPanelCaracyEquipa1Layout = new javax.swing.GroupLayout(jPanelCaracyEquipa1);
        jPanelCaracyEquipa1.setLayout(jPanelCaracyEquipa1Layout);
        jPanelCaracyEquipa1Layout.setHorizontalGroup(
            jPanelCaracyEquipa1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 206, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        jPanelCaracyEquipa1Layout.setVerticalGroup(
            jPanelCaracyEquipa1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelCaracyEquipa1Layout.createSequentialGroup()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanelEquipamientoSeleccionado.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Características Físicas y Equipamiento", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N

        jTableEquipamiento.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null},
                {null, null}
            },
            new String [] {
                "Equipamiento", "Cantidad"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.Integer.class
            };
            boolean[] canEdit = new boolean [] {
                false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jScrollPane2.setViewportView(jTableEquipamiento);

        javax.swing.GroupLayout jPanelEquipamientoSeleccionadoLayout = new javax.swing.GroupLayout(jPanelEquipamientoSeleccionado);
        jPanelEquipamientoSeleccionado.setLayout(jPanelEquipamientoSeleccionadoLayout);
        jPanelEquipamientoSeleccionadoLayout.setHorizontalGroup(
            jPanelEquipamientoSeleccionadoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelEquipamientoSeleccionadoLayout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 266, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(36, 36, 36))
        );
        jPanelEquipamientoSeleccionadoLayout.setVerticalGroup(
            jPanelEquipamientoSeleccionadoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelEquipamientoSeleccionadoLayout.createSequentialGroup()
                .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE)
                .addContainerGap())
        );

        javax.swing.GroupLayout jPanelCaracyEquipaLayout = new javax.swing.GroupLayout(jPanelCaracyEquipa);
        jPanelCaracyEquipa.setLayout(jPanelCaracyEquipaLayout);
        jPanelCaracyEquipaLayout.setHorizontalGroup(
            jPanelCaracyEquipaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelCaracyEquipaLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanelCaracyEquipa1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPanelEquipamientoSeleccionado, javax.swing.GroupLayout.PREFERRED_SIZE, 299, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(23, 23, 23))
        );
        jPanelCaracyEquipaLayout.setVerticalGroup(
            jPanelCaracyEquipaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelCaracyEquipaLayout.createSequentialGroup()
                .addGroup(jPanelCaracyEquipaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jPanelEquipamientoSeleccionado, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanelCaracyEquipa1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        jPanelDatosInteres.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Observaciones", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
        jPanelDatosInteres.setName(""); // NOI18N

        jTextAreaObservaciones.setColumns(20);
        jTextAreaObservaciones.setFont(jTextAreaObservaciones.getFont().deriveFont(jTextAreaObservaciones.getFont().getSize()-3f));
        jTextAreaObservaciones.setRows(5);
        jScrollPane3.setViewportView(jTextAreaObservaciones);

        javax.swing.GroupLayout jPanelDatosInteresLayout = new javax.swing.GroupLayout(jPanelDatosInteres);
        jPanelDatosInteres.setLayout(jPanelDatosInteresLayout);
        jPanelDatosInteresLayout.setHorizontalGroup(
            jPanelDatosInteresLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelDatosInteresLayout.createSequentialGroup()
                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 536, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(38, Short.MAX_VALUE))
        );
        jPanelDatosInteresLayout.setVerticalGroup(
            jPanelDatosInteresLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelDatosInteresLayout.createSequentialGroup()
                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        cmdTramitar.setText("Tramitar");
        cmdTramitar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdTramitarActionPerformed(evt);
            }
        });

        cmdCerrar.setText("Cerrar");

        cmdAsignarAula.setText("Asignar aula");

        cmdConsultarReserva.setText("jButton1");
        cmdConsultarReserva.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                cmdConsultarReservaActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addComponent(cmdAsignarAula)
                        .addGap(18, 18, 18)
                        .addComponent(cmdTramitar)
                        .addGap(49, 49, 49)
                        .addComponent(cmdConsultarReserva)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(cmdCerrar))
                    .addComponent(jPanelCaracyEquipa, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 590, Short.MAX_VALUE)
                    .addComponent(jPanelDatosInteres, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(DatosSolicitud, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(DatosGenerales, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanelLocalizacion, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(DatosSolicitud, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(1, 1, 1)
                .addComponent(DatosGenerales, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanelLocalizacion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jPanelCaracyEquipa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanelDatosInteres, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cmdAsignarAula)
                    .addComponent(cmdTramitar)
                    .addComponent(cmdCerrar)
                    .addComponent(cmdConsultarReserva))
                .addContainerGap(14, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void txtFechaIniActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldFechaIniActionPerformed
        // TODO add your handling code here:
}//GEN-LAST:event_jTextFieldFechaIniActionPerformed

    private void txtHoraIniActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTextFieldHoraIniActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jTextFieldHoraIniActionPerformed

    private void chkDiaCompletoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkDiaCompletoActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_chkDiaCompletoActionPerformed

private void cmdTramitarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdTramitarActionPerformed
    try {
        SolicitudDTO solicitud = objRemotoAula.getSolicitud(sol.getIdSolicitud());

        if (sol.getTipo() == Constantes.TIPO_CANCEL_SOLICITUD) {

            solicitud.setEstado(Constantes.SOLICITUD_CANCELADA);

            objRemotoAula.insertarSolicitud(solicitud);

            JOptionPane.showMessageDialog(null, TDSLanguageUtils.getMessage("aulas.cancelacion.solicitud.correcta"));

        } else if (sol.getTipo() == Constantes.TIPO_CANCEL_RESERVA) {

            solicitud.setEstado(Constantes.RESERVA_CANCELADA);

            //Pantalla
            String penalizacion = JOptionPane.showInputDialog(null, TDSLanguageUtils.getMessage("aulas.reservas.cancelacion.penalizacion"));
            if (edu.uoc.tds.pec4.common.util.UtilidadesGUI.esNumerico(penalizacion)) {
                // Llamamos al objeto remoto
                ReservaDTO reserva = objRemotoAula.getReserva(sol.getIdSolicitud());
                reserva.setImporte((Double.parseDouble(penalizacion)) * reserva.getImporte() / 100);
                objRemotoAula.actualizarReserva(reserva);
                objRemotoAula.insertarSolicitud(solicitud);

                JOptionPane.showMessageDialog(null, TDSLanguageUtils.getMessage("aulas.cancelacion.reserva.correcta"));


            } else {
                JOptionPane.showMessageDialog(null, TDSLanguageUtils.getMessage("aulas.cancelacion.reserva.penalizacion.nonumerico"));
            }
        }

    } catch (GestorAulasException giE) {
        JOptionPane.showMessageDialog(null,
                TDSLanguageUtils.getMessage("aulas.consulta.aulaslibres.err.gestor.desc") + Constantes.SL
                + giE.getMessage(), TDSLanguageUtils.getMessage("aulas.consulta.solicitudes.err.gestor"),
                JOptionPane.ERROR_MESSAGE);
    } catch (RemoteException eRe) {
        JOptionPane.showMessageDialog(null,
                TDSLanguageUtils.getMessage("aulas.consulta.aulaslibres.err.gestor.desc") + Constantes.SL
                + eRe.getMessage(), TDSLanguageUtils.getMessage("aulas.consulta.solicitudes.err.remoto.desc"),
                JOptionPane.ERROR_MESSAGE);
    }// TODO add your handling code here:
}//GEN-LAST:event_cmdTramitarActionPerformed

private void cmdConsultarReservaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmdConsultarReservaActionPerformed
    Frame frame = JOptionPane.getFrameForComponent(this);
    DialogConsultaDetalleReserva dlDetalleConsultaReserva = new DialogConsultaDetalleReserva(frame, true,
            objRemotoDic, objRemotoAula, idSolicitud);

    dlDetalleConsultaReserva.setVisible(true);

    System.out.println(idSolicitud);
}//GEN-LAST:event_cmdConsultarReservaActionPerformed

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
//        java.awt.EventQueue.invokeLater(new Runnable() {
//            public void run() {
//                DialogDetalleSolicitud dialog = new DialogDetalleSolicitud(new javax.swing.JFrame(), true);
//                dialog.addWindowListener(new java.awt.event.WindowAdapter() {
//                    public void windowClosing(java.awt.event.WindowEvent e) {
//                        System.exit(0);
//                    }
//                });
//                dialog.setVisible(true);
//            }
//        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel DatosGenerales;
    private javax.swing.JPanel DatosSolicitud;
    private javax.swing.JCheckBox chkDiaCompleto;
    private javax.swing.JButton cmdAsignarAula;
    private javax.swing.JButton cmdCerrar;
    private javax.swing.JButton cmdConsultarReserva;
    private javax.swing.JButton cmdTramitar;
    private javax.swing.JLabel jLabelAforo;
    private javax.swing.JLabel jLabelDesdeFecha;
    private javax.swing.JLabel jLabelDesdeFecha1;
    private javax.swing.JLabel jLabelEstado;
    private javax.swing.JLabel jLabelFechaSolicitud;
    private javax.swing.JLabel jLabelFechaSolicitud1;
    private javax.swing.JLabel jLabelHastaFecha;
    private javax.swing.JLabel jLabelHastaFecha1;
    private javax.swing.JLabel jLabelIdSolicitud;
    private javax.swing.JLabel jLabelIdSolicitud1;
    private javax.swing.JLabel jLabelLocalidad;
    private javax.swing.JLabel jLabelPais;
    private javax.swing.JLabel jLabelProvincia;
    private javax.swing.JLabel jLabelSuperficie;
    private javax.swing.JLabel jLabelTipoEncuentro;
    private javax.swing.JList jListCFisicas;
    private javax.swing.JPanel jPanelCaracyEquipa;
    private javax.swing.JPanel jPanelCaracyEquipa1;
    private javax.swing.JPanel jPanelDatosInteres;
    private javax.swing.JPanel jPanelDuracion;
    private javax.swing.JPanel jPanelEquipamientoSeleccionado;
    private javax.swing.JPanel jPanelFechaHoraEncuentro;
    private javax.swing.JPanel jPanelLocalizacion;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JTable jTableEquipamiento;
    private javax.swing.JTextArea jTextAreaObservaciones;
    private javax.swing.JLabel labelCliente;
    private javax.swing.JTextField txtAsistentes;
    private javax.swing.JTextField txtCiudad;
    private javax.swing.JTextField txtCliente;
    private javax.swing.JTextField txtEstado;
    private javax.swing.JTextField txtFechaFin;
    private javax.swing.JTextField txtFechaIni;
    private javax.swing.JTextField txtFechaSolicitud;
    private javax.swing.JTextField txtHoraFin;
    private javax.swing.JTextField txtHoraIni;
    private javax.swing.JTextField txtHoraSolicitud;
    private javax.swing.JTextField txtIdSolicitud;
    private javax.swing.JTextField txtPais;
    private javax.swing.JTextField txtProvincia;
    private javax.swing.JTextField txtSuperficie;
    private javax.swing.JTextField txtTipoEncuentro;
    private javax.swing.JTextField txtTipoSolicitud;
    // End of variables declaration//GEN-END:variables
}